package com.skivingcloud.file.store;

import com.skivingcloud.file.entity.SysFile;

import java.io.InputStream;

/**
 * @author hushouquan
 * @since 2024/1/22
 */
public interface FileStorageDao{
    /**
     * 保存文件的方法
     * @param fileManagement 文件对象
     * @param fileInputStream 文件流
     * @return 文件路径（实现方式不同可能不同，有些存储引擎是返回文件的id）
     * @throws Exception 异常
     */
    String saveFile(SysFile fileManagement, InputStream fileInputStream) throws Exception;
    
    /**
     * 读取文件的方法
     * @param fileManagement 文件对象
     * @return 文件流
     * @throws Exception 异常
     */
    InputStream getFile(SysFile fileManagement) throws Exception;
    
    /**
     * 作废或删除文件
     * @param fileManagement 文件对象
     * @param fileState 状态：1-正常、2-作废、3-删除
     * @throws Exception 异常
     */
    void moveFilePath(SysFile fileManagement, String fileState) throws Exception;
}
